Scalable browser

ABSTRACT

A computer program forming a browser program ( 200 ) when executed on a computer ( 101 ), wherein: the program is arranged in a browser structure ( 300 ) comprised of program components ( 301, . . . , 306 ); and the browser program is arranged to process contents arranged in a data structure e.g. Extensible Mark-up Language (XML) comprised of modules enclosed by XML tags. Each program component in the browser structure matches with a respective module in the data structure. The incorporation or removal of certain functionality at the XML document level corresponds to the addition or removal of a piece of software in the architecture. Consequently, resource-constrained devices are enabled to access information e.g. from the Internet, in an interoperable and compatible manner. The resource constraints concern storage capacity and processing power, but also display size etc.

This invention relates to a scalable browser program.

Browser programs are widely known and used as an application programthat provides a user interface for viewing and interacting withinformation distributed on a media such as a local disk, a localnetwork, the Internet etc. The information and the browsers areincreasingly being arranged to interface more closely with each other toallow users to interact with various types of information by means of asingle application: the browser.

Particularly, for use on the Internet, information is arranged inaccordance with a presentation language. Such presentation languages arefor instance Hyper Text Mark-up Language (HTML), Dynamic HTML (DHTML),and Extensible Mark-up Language (XML). XML presentation languagesconsist of predefined XML elements (or tags) that comply with a schemae.g. Document Type Definition (DTD) or XML Schema.

Modularization is the act of splitting up such a set of elements fromone language into subsets, or modules. XHTML and SMIL are examples wheresuch a modularization has been defined. It is also possible to define anelement set, with presentation semantics and elements that can becombined (or embedded) with other elements, without being a completelanguage on its own. MathML, Ruby and XForms are examples in thatcategory.

Once the modules are available, they can be combined into profiles. Aprofile is a language, in that it provides a set of elements providing acoherent and complete set of semantics needed by the user. Obviousprofiles are the languages from which modules were derived, such as theXHTML and SMIL languages. A profile can be implemented by anapplication.

The mechanisms of modularization and profiling are based on theextensibility property of XML. XML specifies how elements can becombined in a document.

Profiling can also be across original languages domains. Examples arethe XHTML+SMIL profile and SMIL-Animation for the purpose of animatingSVG.

Thus there are great opportunities for providing presentationinformation to a browser. In terms of data communication the informationto be presented and information describing the presentation arecommunicated via e.g. the widely used TCP/IP protocol.

In order to present information in accordance with the above, thebrowser program must support a presentation language. This includesparsing information, and rendering contents in the information inaccordance with rendering rules of the language. The languages arebecoming more and more advanced and involve complex implementation ofrendering rules in the browser. This requires extensive use of workingmemory, storage capacity, and processing power. Especially, when morepresentation languages are to be supported by the browser extensivesystem resources are needed. Today there is demand for browsers insmall-sized/portable devices such as mobile telephones, Portable DigitalAssistants (PDA's), etc. to view an increasing load of informationprovided to these devices more clearly. Since such devices suffer fromrelatively small system resources it is also necessary to lower systemresource requirements.

EP-A2-1003101 discloses an application kernel used in combination withuser interface components and data components. The kernel resides at aclient side and is able to download components as needed from a server.This is a dynamic process controlled by the kernel and executed incommunication with the server.

However, the above prior art method involves the problem that it is onlyinvolved with downloading components needed for processing data whichotherwise (i.e. before the download) could not be processed. This priorart can be considered as being complementary to the present invention.

The above and other problems are solved by a computer program forming abrowser program when executed on a computer, wherein: the program isarranged in a browser structure comprised of program components; thebrowser program is arranged to process contents arranged in a datastructure comprised of modules; and wherein each program component inthe browser structure matches with a respective module in the datastructure.

Thereby, the computer program and the functionality it disposes can bescaled with present data. A further advantage is that similar types ofmodules (e.g. defined by XML constructs), from different sources, can bereused in different profiles—or applications.

Consequently, resource-constrained devices are enabled to accessinformation e.g. from the Internet, in an interoperable and compatiblemanner. The resource constraints concern storage capacity and processingpower, but also display size etc. Handheld devices, such as mobilephones, form a major class in this area.

The browser program to be run on the resource-constrained devices canthus be arranged to conform a profile of a customized presentationlanguage.

The invention's objective is to design the software structure forperforming the XML document rendition in such a manner that thefunctions represented by the XML modules also appear in a modularisedmanner in the structure. The incorporation or removal of certainfunctionality at the XML document level corresponds to the addition orremoval of a piece of software in the architecture. This can be realisedby means of component technology.

In component technology one designs the pieces of software withwell-defined interdependencies. Examples of component technologies areCOM, Darwin and Koala. The components (program components) arecharacterized in being encapsulated pieces of software that cancommunicate with their environment via interfaces. The interfacesimplement methods for either input or for output. The input correspondsto the needs by the component to perform its function correctly; theoutput corresponds to the result of that function.

The components can be combined in a structure by connecting output andinput interfaces. The connection can be realized at compile time or atrun time. A constellation of components can be identified as a componentby itself, or vice versa a component can possibly by split up insub-components.

Preferably, each of the program components is arranged to receivecontent from the respective module and is supplied with functionsarranged to operate on content from the respective module.

In an expedient embodiment the computer program has a parser forextracting content from respective modules and providing content of arespective module to a program component matching the respective module.

When the size and functionality of a program component is scaled withthe size of available resources of a system to run the computer program,the scalability involves individual components. This allows for adaptingthe browser program to devices with only very limited resources.

When the data structure is an XML data structure with modules defined byXML elements, the matching can be made very simple.

The computer program can be arranged to download program components andintegrate them as a portion of the browser. Thereby, the program canadapt or be adapted to changes over time—for instance to take advantageof modified and/or additional program components.

When the data structure is split by the modules and forwarded tobrowsers distributed on multiple devices, the browsers can be tailoredto specific devices. This is particularly expedient when the devices areable to communicate mutually.

The program can be arranged to dispose different capabilities in theform of profiles by loading into the structure a set of componentscorresponding to a selected profile. Thereby, the browser scales withrequirements of a selected profile. The structural architecture of theprogram allows degree of adaptability to a selected profile. This inturn allows for very efficient memory usage.

The invention will be explained more fully below in connection withpreferred embodiments and with reference to the drawings, in which:

FIG. 1 shows a browser in a system;

FIG. 2 shows a first structure of a browser; and

FIG. 3 shows a second structure of a browser.

FIG. 1 shows a browser in a system. The system 101 can be a mobiletelephone, a Personal Digital Assistant (PDA), general purpose computeretc. Generally, the term computer as used herein comprises all types ofconsumer electronics such as TV sets, radios, set-top boxes etc.

The system comprises a computer unit 102 capable of running an OperatingSystem program (OS) 105, application programs (Apps) 104, and a browserprogram (BrwsrPrg) (103). The term application programs (Apps)′ coversprograms that are run by the computer system 102 for different purposes.Such application program can be E-Mail applications, calendarapplications, etc

The system comprises interface means such as a microphone 109, aloudspeaker 108, a display 107, and keyboard 106. Moreover, theinterface means may comprise a computer mouse (not shown).

FIG. 2 shows a first structure of a browser program. The browser program200 is comprised of program components to operate on separate contentportions in an input file or stream of data. The browser program 200 isarranged to process contents arranged in a data structure comprised ofmodules. Preferably the data structure is in accordance with theExtensible Mark-up Language (XML), wherein in a module is defined as anode and sub-nodes, if any, in a tree-representation of the XMLstructure. A node or sub-node comprise one or more elements containingcontent and is enclosed by start-tags and end-tags. In the Figure aninput file 212 (XML) is received by a parser component (Prs) 201 of thebrowser program 200. The parser component 201 is arranged to extractcontents from respective modules and to provide content of a respectivemodule (i.e. a content portion) to a program component matching therespective module.

A first component 202 denoted streamedText (strmTxt) comprises asubcomponent 203 denoted Loader (Ldr) and a subcomponent 204 denoted‘Text Rendition and Layout’ (txtR/L). Input to the first component issupplied from the Parser 201 and from a second component 205 denotedSynchronisation (Sync). Output from the component is supplied to displaymeans 213 via a driver (not shown).

The second component 205 comprises a subcomponent 206 denoted Filter(flt), a subcomponent 207 denoted Clock (Clk), and a subcomponent 208denoted Comparator (Comp). Input to this component is provided by theParser 201.

A third component 209 denoted playAudio (plAud) comprises a subcomponent210 denoted DRM and a subcomponent 211 denoted ‘Render and Decode’(R/D). Output from the third component is supplied to loudspeaker means214 via a driver (not shown).

As will be shown in the following example I these program components, inthe browser structure, matches with a respective module in the datastructure.

Example I is explained in terms of profiles. It is recalled that aprofile is a configured service providing a coherent and complete set offunctions for complying with a user's demands while obeying systemcapabilities. Generally, it should be mentioned that the below terms areassumed to be well known by a person skilled in the art. However, moreinformation about the semantic and elements used in the examples can befound at www.w3.org/AudioVidio where SMIL (Synchronized MultimediaIntegration Language) is explained.

EXAMPLE I Synchronization

In this example four profiles are exemplified:

-   -   Profile 1A—Presentation of streamed text.    -   Profile 1B—Presentation of audio.    -   Profile 1C—Presentation of both together.    -   Profile 1D—synchronized presentation.

Profile 1A—Presentation of streamed text: There is one XML module,called ‘StreamedText’ (capital S): Module: StreamedText <textstream><page time=“0”>Here is the text to be displayed at time “0”</page> <pagetime=“1”>Here is the text to be displayed at time “1”</page> <pagetime=“2”>Here is the text to be displayed at time “2”</page> ... <pagetime=“N-1”>Here is the text to be displayed at time “N-1”</page></textstream>

The ‘StreamedText’ module consists of two elements, <textstream> and<page>. The element <textstream> wraps the module ‘StreamedText’, andthe element <page> delimits each string of text to be presented oneafter the other. The element <text> has an attribute denoted ‘time’ andindicating when a new <page> is to replace a previous one. It should benoted that other elements and attributes are conceivable, e.g. fordetermining a display position, duration of display etc.

With a view to FIG. 1 the program components are specified in terms oftheir input and output, which in turn constitutes the interface of thecomponents: TABLE 1 streamedText component. name Loader input content ofall <page> elements input trigger (received from Clock) output singletext string, i.e. the content of one <page> name Text Rendition AndLayout input text string (received from Loader) output screen image ofthe formatted text name Clock input all time values of the <page>s(received from Parser) output trigger (when time value passes - thecomponent generates the clock ticks itself)

The Loader and the Text Rendition And Layout components can be combinedin a single component, streamedText (lower case s).

Profile 1B—Presentation of audio: There is one XML module, calledPlayAudio (capital P): Module: PlayAudio <audiosrc=“rtsp://examplecast.net/evergreens/beatles/ yesterday.mp3”type=“mp3” drm=“free”/>

The PlayAudio module consists of one element, <audio>. It references anaudio file on the internet, indicated by its attribute “src”. The fileis of type “mp3”, and it is free for playback according to the attribute“drm”.

The program components are specified in table 2 below: TABLE 2 playAudiocomponent. name DRM input digital rights value (received from Parser)Output enable name Render And Decode input audio file address (receivedfrom Parser) input coding type (received from Parser) input enable(received from DRM) output (fetched and decoded) audio signal

The DRM and the ‘Render And Decode’ components can be combined in asingle component, playAudio (lower case p).

Profile 1C—Presentation of both together: The profile takes the previoustwo XML modules, StreamedText and PlayAudio, together: Module: mergedmodule. <par> <textstream> <page time=“0”>Here is line 1 from thesong</page> <page time=“1”>Here is line 2 from the song</page> <pagetime=“2”>Here is line 3 from the song</page> ... <page time=“N-1”>Hereis line N from the song </page> </textstream> <audiosrc=“rtsp://examplecast.net/evergreens/beatles/ yesterday.mp3”type=“mp3” drm=“free”/> </par>

In fact the profile consists of three modules, as it also includes theelement <par> to indicate that its two children, <textstream> and<audio>, are to be presented simultaneously. The element is parsed, butis not processed further in this profile. The audio is reproduced whileat the same time the lines from the song are displayed on a screen. Thetwo proceed unsynchronized.

The program components are specified in table 3 below: TABLE 3component. name Loader input content of all <page> elements inputtrigger (received from Clock) output single text string, i.e. thecontent of one <page> name Text Rendition And Layout input text string(received from Loader) output screen image of the formatted text nameclock input all time values of the <page>s (received from parser) outputtrigger (when time value passes; the component generates the clock ticksitself) name DRM input digital rights value (received from Parser)Output enable name Render And Decode input audio file address (receivedfrom Parser) input coding type (received from Parser) input enable(received from DRM) output (fetched and decoded) audio signal

Profile 1D—Synchronized presentation of both together: The profileextends the previous profile with synchronization functionality, or,vice versa, the previous profiles are subsets from this one: Module:complete module. <par> <textstream> <page time=“yday.marker(1)”>Here isline 1 from the song</page> <page time=“yday.marker(2)”>Here is line 2from the song</page> <page time=“yday.marker(3)”>Here is line 3 from thesong</page> ... <page time=“yday.marker(N)”>Here is line N from thesong</page> </textstream> <audiosrc=“rtsp://examplecast.net/evergreens/beatles/ yesterday.mp3”type=“mp3” drm=“free” id=“yday”/> </par>

This profile consists of the same modules as in example 1C, howeverextended with a fourth module, called MediaMarkerTiming (alike themodule with the same name in the SMIL20 specification), that includesfor media marker and synchronization functionality. The audio isreproduced while at the same time the lines from the song are displayedon a screen. Now, the two proceed synchronized.

The program components are specified in table 4 below: TABLE 4component. name Loader input content of all <page> elements receivedfrom parser input trigger (received from Synchronization) output singletext string, i.e. the content of one <page> name Text Rendition AndLayout input text string (received from Loader) output screen image offormatted text name Clock input all time values that are clock values(received from Filter) output trigger (when time value passes —thecomponent generates the clock ticks itself) name DRM input digitalrights value (received from Parser) Output enable name Render And Decodeinput audio file address (received from Parser) input coding type(received from Parser input enable (received from DRM) output (fetchedand decoded) audio signal output markers comment This output is added bythe addition of the MediaMarkerTiming. One can think of this output asgenerated by a subcomponent of this Renderer And Decoder component. (Thesubcomponent is not shown in the Figure.) In that perspective thissubcomponent was an “empty” one in the former examples (and the markersoutput of this Renderer And Decoder component would have been a danglingone). name Synchronisation input all time values of the <page>s(received from Parser) input markers (received from Render And Decoder)output trigger (when either Clock or Comparator fires) comment TheSynchronization component wraps the Clock component. The Clock's inputis connected to the Synchronization's input, via a filter subcomponentthat filters through the appropriate time-values. The Clock's output isconnected to the Synchronization's output. This Synchronizationcomponent also contains a third subcomponent (next to Clock and Filter),Comparator, that performs the comparison between markers andtime-values, filtered for being markers. This third component's outputis connected to the Synchronization's output. To explain the filtering abit further. Although the XML document in this example 1D only contains<page time=“yday.marker(.)”>declarations, it could also have contained<page time=“.”>declarations. The Filter subcomponent separates these twoto the two other subcomponents, Clock and Comparator. name Filter inputall time values of the <page>s (received from Parser) output all timevalues that are clock values output all time values that are markervalues name Comparator input all time values that are marker values(received from Filter) input markers (received from Render And Decoder)output trigger (when marker value matches time value)

The relation between XML modules and program components in example I isas follows: TABLE 5 XML module SW component StreamedText streamedTextand Clock PlayAudio playAudio MediaMarkerTiming Comparator andsubcomponent in Renderer And Decoder StreamedText + MediaMarkerTimingFilter

The Filter component is implied by the presence of two timing types:StreamedText and MediaMarkerTiming.

Note that the association of components with modules can depend on thehierarchy in the profiles. Clock is associated with StreamedText; Filterand the wrapper Synchronization are introduced when both forms of timingenter the profile. The association of these timing modules relates tothe hierarchy in the timing. For example, a profile is conceivable thatdoes not support the clock time-values. It would imply the replacementof the Clock component by an empty component (and Filter can beemptied). The Clock component is not associated in a hard way with theStreamedText module.

FIG. 3 show& a second structure of a browser. In the Figure an inputfile 307 (XML) is received by a parser component 301 (Prs) of thebrowser program 300. The parser component 301 is arranged to extractcontents from respective modules and to provide content of a respectivemodule (i.e. a content portion) to a program component matching therespective module.

A component 302 denoted ‘Image Render’ (imgR) receives input from theParser 301 and provides output to a component denoted ‘Layout Manager’303 (LoMan) which in turn provides an output to a display 308 via adriver (not shown). The ‘Layout Manager’ 303 receives additional inputsfrom the Parser 301 and a component 304 denoted ‘List Manager’(ListMan).

The ‘List Manager’ component is responsible for receiving events raisedby a user operating a user interface. The events may be so-called‘on-click’ events, on ‘mouse-move’ events, ‘double-click’ events etc. Inaddition to supplying an output to the ‘Layout Manager’, an output issupplied to the ‘Event Listener’ component 305 (EvList).

A component ‘Excl Manager’ 306 (Exclman) receives input from the Parserand the ‘Event Listener’ and supplies an output to the ‘Event Listener’.

As will be shown in the following example II these program components,in the browser structure, matches with a respective module in the datastructure.

EXAMPLE II Layout

In this example three profiles are exemplified:

-   -   Profile 2A—Presentation of image gallery without layout.    -   Profile 2B—Addition of UI-list with layout.    -   Profile 2C—Addition of UI-list for small screen (no layout).

Profile 2A—Presentation of image gallery without layout: There are acouple of XML modules: ExclTimeContainers, EventTiming andMultiArcTiming alike those from SMIL20, and Image alike the one fromXHTML: Module <excl> <img id=“pict1” src=“picture1.png” begin=“0;pictN.click”/> <img id=“pict2” src=“picture2.png” begin=“pict1.click”/>... <img id=“pictN” src=“pictureN.png” begin=“pictN-1.click”/> </excl>

The <excl> element from the ExclTimeContainers module contains <img>elements from the Image module. The <excl> element has the semanticsthat only one of its children can be presented at a time. If an elementbecomes active the current one becomes deactivated. The begin attributesfrom the EventTiming module specify when the corresponding <img> elementmust be shown.

The begin attribute of the first <img> has two values, allowed by theMultiArcTiming module. It realizes initiation of the <excl>.

A new <img> is shown after receiving a ‘click’ event from its previous<img>. The ‘click’ event is initiated by some user action and broughtinto the system in a platform dependent way.

Cyclic presentation of the images results.

The program components: TABLE 6 Components for presentation of imagegallery without layout. name ImageRender input all <img> ids (receivedfrom Parser) input element id of <img> to be displayed (received fromEventListener) comment The component should receive a picture fileaddress from another component that would provide that file addressgiven the element id, the transformation table being loaded from theParser. For simplicity, this is left away. output screen image ofrendered picture name EventListener input registration list (receivedfrom Parser) input user ‘click’ event (received from platform) inputactivate registrant (received from EventListener) input de-activateregistrant (received from ExclManager) output activate trigger labeledwith element id name ExclManager input all <img> element ids (receivedfrom Parser) input activate trigger labeled with element id (receivedfrom EventListener) output deactivate trigger labeled with element id

Profile 2B—Addition of UI-list with layout: The profile extends theprevious profile with a List module and a Layout module, of which thelatter is comparable to the SMIL ‘Basic Layout’ module: Module <gallery><list top=“0” left=“0” width=“50%” height=“100%”> <itemid=“item1”>Picture 1</item> <item id=“item2”>Picture 2</item> ... <itemid=“itemN”>Picture N</item> </list> <excl top=“0” left=“50%” width=“50%”height=“100%”> <img id=“pict1” src=“picture1.png” begin=“item1.click”/><img id=“pict2” src=“picture2.png” begin=“item2.click”/> ... <imgid=“pictN” src=“pictureN.png” begin=“itemN.click”/> </excl> </gallery>

The Layout module adds the top, left, width and height attributes (itdiffers from the SMIL20 BasicLayout module in the way it is adding theattributes); the List module adds the <list> and <item> elements, whichdeclare a UI list widget and its fields, respectively. The list is to bedisplayed at the left half, the pictures at the right half of thescreen. The UI rendition of the <list> might be scrollable in one oranother way. The <item> element contains a text string that is to bedisplayed in the fields of the list. Upon clicking a field an event israised associated with the corresponding <item> element. (The <gallery>element is needed for XML well-formedness purposes, but is not relevantfor this discussion.)

The program components: TABLE 7 Components for a UI-list with layout.name ListManager input all <item> element ids (received from Parser)input screen size (received from parser) input user ‘click’ eventlabeled with field id, e.g. its coordinates (received from platform)output screen image of rendered list output event notification labeledwith element id name ImageRenderer input all <img> ids (received fromParser) input element id of <img> to be displayed (received fromEventListener) input all image sizes (received from Parser) outputscreen image of rendered picture name LayoutManager input screen images(received from both Renderers) input screen images are labeled withRenderer id input position, size and z-order of screen images (receivedfrom Parser) output screen image of full screen name EventListener inputregistration list (received from Parser) input event notificationlabeled with event source id (received form list manager) input activateregistrant (received from EventListener) input de-activate registrant(received from ExclManager) output activate trigger labeled with elementid name ExclManager input all <img> element ids (received from Parser)input activate trigger labeled with element id (received fromEventListener) output deactivate trigger labeled with element id

Profile 2C—Addition of UI-list for small screen (no layout): The profileis the same as the previous profile, however, the Layout module is notsupported; the Layout syntax can be parsed and validated, but thedeclared behaviour is not performed: Module <gallery> <list top=“0”left=“0” width=“50%” height=“100%” begin=“0;excl.click”> <itemid=“item1”>Picture 1</item> <item id=“item2”>Picture 2</item> ... <itemid=“itemN”>Picture N</item> </list> <excl id=“excl” top=“0” left=“50%”width=“50%” height=“100%”> <img id=“pict1” src=“picture1.png”begin=“item1.click”/> <img id=“pict2” src=“picture2.png”begin=“item2.click”/> ... <img id=“pictN” src=“pictureN.png”begin=“itemN.click”/> </excl> </gallery>

Either the list or a selected picture is shown. A picture is selected byclicking on the list. Clicking a picture will always lead to showing thelist. (More sophisticated schemes are conceivable such that not alwaysthe list is shown in between pictures, e.g. by using double-clicking andright-clicking, or as shown in the Example 3B below, etc. This notrelevant for this discussion.)

The program components: TABLE 8 Components for UI list for small screen(no layout). name Listmanager input all <item> element ids (receivedfrom Parser) input screen size (received from Parser) input user ‘click’event labeled with field id, e.g. its coordinates (received fromplatform) output screen image of rendered list output event notificationlabeled with element id name ImageRenderer input all <img> ids (receivedfrom Parser) input element id (received from EventListener) input allimage sizes (received from Parser) output screen image of renderedpicture name LayoutManager input screen images (received from bothRenderers; screen images are labeled with render id) input position,size, and z-order of screen images (received from Parser) output screenimage of full screen name EventListener input registration list(received from Parser) input event notification labeled with eventsource id (received from ListManager) input activate registrant(received from EventListener) input de-activate registrant (receivedfrom ExclManager output activate trigger labeled with element id nameExclManager input all <img> element ids (received from Parser) inputactivate trigger labeled with element id (received from EventListener)output deactivate trigger labeled with element id

The ‘Layout Manager’ is heavily reduced. It performs the task replacingthe screen images with its last received input. There will be onerendition, i.e. one element, visible at a time.

It is recalled, again, that the example is intended to show theinvention in simple manners. A more sophisticated domain analysis willlead other ways of designing the components. For instance, thecomponents as shown here might be split in subcomponents, where they aregrouped in different ways depending on the profile. It remains, however,that an XML module associate with these subcomponents. More precisely,in this example 2C, the separation of user clicks would not be performedby the ListManager; it rather relates to an additional componentmanaging and dispatching the events. As said, this is not detailed inthe example. A similar remark concerns the clearance of layout spacewhen an <img> is deactivated.

The relation between XML modules and SW components is as follows fromtable 9: TABLE 9 XML module SW component Image ‘Image Renderer’EventTiming + MultiArcTiming ‘Event Listener’ ExclTimeContainers ‘ExclManager’ List ‘List Manager’ Layout ‘Layout Manager’

EXAMPLE III Multiple Devices

In this example two profiles are exemplified:

-   -   Profile 3A—Device for text and device for Audio.    -   Profile 3B—Device for image presentation and device for managing        a list.

This example discusses another form of application of the scalabilityproperty. In the first two examples the scalability related to expandingthe capabilities of the client device. In this example, we take theprevious two scenarios, but we combine two devices of complementarycapability. The two devices are loaded with the same XML document.Possibly they are interconnected, such that they can synchronize theiroperation. The first device is capable of presenting one part of thedocument, the second device of presenting the other part.

Since the devices are loaded with the same XML document, it is assumedthat the document allows its partial presentation in case the client isonly capable of doing so. Otherwise a pre-processor (proxy, possiblyhosted at one of the devices) is required that splits the document intotwo.

The fetching and loading of the document to the two devices alsorequires some type of communication between them. In case ofsynchronization between the two devices during the presentation of thedocument, there is also the need for hosting that function.

The SMIL20 Basic specification is an example of how the same documentcan be loaded to clients of different capability. It uses, i.e., anattribute called systemRequired to declare the need for support of acertain module. The attribute is part of the module calledBasicContentControl. It has the semantics that the rendition of thesub-tree rooting at the element at which it is called may only beperformed if its associated capability is supported. Otherwise thesub-tree must be skipped, while the client may proceed rendering theremainder of the document. In the examples below we copy from thismodule. Note, that it implies a corresponding program component toperform the capability checking.

EXAMPLE 3A Device for Text and Device for Audio

There are two devices, one able to present streamed text according toProfile 1A, the other able to present audio according to Profile 1B. Thetwo devices are both loaded with the XML document from Profile 1C,however modified with the systemRequired attribute: Module <par><textstream systemRequired=“streamedText”> <page time=“0”>Here is line 1from the song</page> <page time=“1”>Here is line 2 from the song</page><page time=“2”>Here is line 3 from the song</page> ... <pagetime=“N-1”>Here is line N from the song</page> </textstream> <audiosrc=“rtsp://examplecast.net/evergreens/beatles/ yesterday.mp3”type=“mp3” drm=“free” systemRequired=“playAudio”/> </par>

The first device will present the streamed text and the second willreproduce the audio. If both devices can be synchronized, theSynchronization module, shown in FIG. 2 and described in Profile 1D, hasto be hosted to control the synchronization between the two devices.This can be in the proxy, or in one of the two devices. If the author ofthe XML document wishes to require the synchronization, a systemRequiredcall for the MediaMarkerTiming is needed at the <par> element.

EXAMPLE 3B Device for Image Presentation and Device for Managing a List

There are two devices, one able to display pictures according to Profile2A, the other able to present the list of the picture enabling a user tonavigate through the pictures. The list is according to the one inProfiles 2B and 2C. The two devices are connected to each other, suchthat the “list” device can signal choices to the “picture” display. Thetwo devices are both loaded with the XML document from Profile 2C,however modified with the systemRequired attribute and with additionalevent declarations on the <img> according to Profile 2A: Module<gallery> <list begin=“0;excl.click” systemRequired=“List”> <itemid=“item1”>Picture 1</item> <item id=“item2”>Picture 2</item> ... <itemid=“itemN”>Picture N</item> </list> <excl id=“excl”systemRequired=“ExclTimeContainers+ EventTiming+MultiArcTiming+Image”><img id=“pict1” src=“picture1.png” begin=“0; item1.click; pictN.click”/><img id=“pict2” src=“picture2.png” begin=“item2.click; pict1.click”/>... <img id=“pictN” src=“pictureN.png” begin=“itemN.click;pictN-1.click”/> </excl> </gallery>

The first device will present the pictures; the user can scroll throughthem by ‘clicking’ the picture (the clicking can be in the form ofhitting a knob-button on the display device). It supports the componentsas described in Profile 2A. The second device will present the list ofpictures. It supports the components that Profile 2C adds to Profile 2A,noteworthy the ListManager. The second device communicates with thefirst device to notify the events.

It is also conceivable that the first device performs as in Profile 2C,i.e. that it includes the ListManager. The second device then providesfor remote control of the first device. Instead of navigating a list ofimages, one could think of navigating TV programs, where the listrepresents the EPG (electronic Program Guide). The TV screen remainspresenting the TV programs, while on the remote control the programguide can be inspected. Another scenario is where a TV program consistsof multiple (camera) views. Instead of presenting the navigation fieldstogether with the selected view on the same screen, a peripheral devicecan take over that part of the presentation. The program maker designsthe XML document that describes the complete program includingnavigation through the views. The TV is able to present that all, alikeProfile 2C, while extending the TV with a dedicated remote for the UIcomponents and loading that with the same XML document from the programmaker, enables the separation of UI and program display (aside from thecomfort of remote usage). This assumes the XML document containsinformation like the systemRequired attribute. Note that the program canalso be employed on TV sets that do not support the navigation at all,along the lines of scenario 2A.

It may be useful to stress that “components” and “structure” areconcepts that are used at the software design phase. They provide anabstraction level above the actual program code that instructs theirfunctionality. A compiler is assumed to create the actual code and tooptimise that for performance criteria such as code size.

Components can also be replaced by other components, as long as theyfull-fill the same input/output relations. For example, a certainfunction can be removed from the structure by replacing thecorresponding component through an empty component that satisfies theinput/output relations. It takes the output from the other components towhich its input is connected and either discards that or passes itthrough to its own output. The information becoming available at theoutput can also be generated by the component, e.g. being a fixedconstant. It is also possible that the received input is slightlymodified before being supplied to the output. This all depends on theprecise function of the component and its role in the total structure. Away of thinking of the replacing “empty” component is that of a gluelayer (in the form of a simple component) between the componentsperforming the functions that have remained.

XML modules (or a set of XML modules) representing functionality at thelanguage level are associated with components (or a set of components)at the program or software level that implement the function. Theprofiling at the language level corresponds to the(re)configuring/instantiating of the components in the structure. Thereis one unified structure, however implementations on devices implementonly parts of it, such as to scale with the required functionalityprofile. The parts that are implemented contain the subset of componentsthat correspond with the XML modules forming the profile at the XMLpresentation language level.

Examples of XML functionality modules include:

-   -   Timing for synchronization    -   Timing for interaction and other events    -   Timing for animation    -   UI; widgets (buttons, sliders)    -   UI; user input (XForms)    -   UI; speech (input and/or output)    -   Layout for text (HTML)    -   Layout for text styling (CSS)    -   Layout for media (audio/video rendition)    -   Layout for graphics    -   Layout for streamed text (close captioning)    -   Layout for digital rights and key management (encryption)    -   Layout for mathematical formulas (MathML)

All designs in this document, such as the used XML mark-up, are by wayof example. There is not necessarily a one-to-one (semantic) map withexisting XML having the same syntax and grammar. Neither is there asuggestion to provide good design of the mark-up. Likewise, the programcomponents are named by way of example, but do not imply optimal designin terms of performance metrics such as memory consumption or functionaloperation.

In order to keep the number of components low, components are groupedinto larger components where that doesn't affect the example. Trivialcomponents, not relevant to the examples are left out.

1. A computer program product forming a browser program (103; 200; 300)when executed on a computer (101), wherein: the program is arranged in abrowser structure (200; 300) comprised of program components (201, . . ., 211; 301, . . . , 306); the browser program is arranged to processcontents arranged in a data structure comprised of modules; and eachprogram component in the browser structure matches with a respectivemodule in the data structure.
 2. A computer program product according toclaim 1 wherein each of the program components is arranged to receivecontent from the respective module and is supplied with functionsarranged to operate on content from the respective module.
 3. A computerprogram product according to claim 1 wherein the computer program has aparser (201; 301) for extracting content from respective modules andproviding content of a respective module to a program component (202, .. . , 211; 302, . . . , 306) matching the respective module.
 4. Acomputer program product according to claim 1 wherein the size andfunctionality of a program component is scaled with the size ofavailable resources of a system to run the computer program.
 5. computerprogram product according to claim 1 wherein the data structure is anXML data structure with modules defined by XML elements.
 6. A computerprogram product according to claim 1 wherein the computer program isarranged to download program components and integrate them as a portionof the browser.
 7. A computer program product according to claim 1wherein the data structure is split by the modules and forwarded tobrowsers distributed on multiple devices (101).
 8. A computer programproduct according to claim 1 arranged to dispose different capabilitiesin the form of profiles by loading into the structure a set ofcomponents corresponding to a selected profile.
 9. A set-top box with acomputer program as set forth in claim
 1. 10. A mobile telephone with acomputer program as set forth in claim
 1. 11. A general-purpose computerwith a computer program as set forth in claim
 1. 12. A method of forminga browser program (103; 200; 300), wherein the program is arranged in abrowser structure (200; 300) comprised of program components (201, . . ., 211; 301, . . . , 306); processing contents arranged in a datastructure comprised of modules; and matching each program component inthe browser structure with a respective module in the data structure.